<?php

//Mandamos a traer la libreria de Nusoap
require '../lib/nusoap.php';
//Mandamos a traer la conexion de adodb
require '../Conexion/Conexion.php';

//$namespace = "http://localhost/sicoba/Servidor";
$namespace = "http://wouwou.xtrweb.com/sicoba/Servidor";
$server = new soap_server;
$server->configureWSDL('clientes', $namespace);
$server->wsdl->shemaTargetNamespace = $namespace;
//Nombrar los registro de altas para las funciones
$server->register('altas', array('jsondatos' => 'xsd:string'), array('return' => 'xsd=string'), $namespace);
//Nombrar los registro de bajas para las funciones
$server->register('bajas', array('id' => 'xsd:integer'), array('return' => 'xsd=bool'), $namespace);
//Nombrar los registro de cambios para las funciones
$server->register('cambios', array('jsondatos' => 'xsd:string'), array('return' => 'xsd:string'), $namespace);
//Nombrar el servicio para los usuarios seleccionados en la funcion seleccionados
$server->register('seleccionados', array('id' => 'xsd:integer'), array('return' => 'xsd:string'), $namespace);
//Nombrar el servicio para verificar numeros de cuenta
$server->register('verificar', array('nocuenta' => 'xsd:integer'), array('return' => 'xsd:string'), $namespace);
//Nombrar el servicio para el buscador de usuarios
$server->register('buscar', array('jsonbuscador' => 'xsd:string'), array('return' => 'xsd:string'), $namespace);

//Se crea la funcion para altas
function altas($jsondatos) {
    $resp = "";
    try {

        $conec = conectar();
        $datos = json_decode($jsondatos);

        $nombre = $datos->{'nombre'};
        $apaterno = $datos->{'apaterno'};
        $amaterno = $datos->{'amaterno'};
        $rsocial = $datos->{'rsocial'};
        $sexo = $datos->{'sexo'};
        $fnacimiento = $datos->{'fnacimiento'};
        $rfc = $datos->{'rfc'};
        $calle = $datos->{'calle'};
        $num = $datos->{'num'};
        $colonia = $datos->{'colonia'};
        $cp = $datos->{'cp'};
        $estado = $datos->{'estado'};
        $delmun = $datos->{'delmun'};
        $tel1 = $datos->{'tel1'};
        //$tel2 = $datos->{'tel2'};
        $nocuenta = $datos->{'nocuenta'};
        $idtipotoma = $datos->{'idtipotoma'};

        $idpass = "";
        $pMin = substr($nombre, 0, 1);
        $pLetra = strtoupper($pMin);
        $sMin = substr($apaterno, 0, 1);
        $sLetra = strtoupper($sMin);
        $tMin = substr($amaterno, 0, 1);
        $tLetra = strtoupper($tMin);
        $cad = $pLetra . $sLetra . $tLetra;

        if ($fnacimiento === "") {
            $fnacimiento = "0000-00-00";
            $tMin = substr($rsocial, 0, 3);
            $cad = strtoupper($tMin);
        }
        $idpass = $cad . $nocuenta;

        if ($conec->Execute("insert into usuariosC (nombre,apaterno,amaterno,rsocial,sexo,fnacimiento,rfc,calle,num,colonia,cp,estado,delmun,tel1,nocuenta,idtipotoma,falta) 
                values ('$nombre','$apaterno','$amaterno','$rsocial','$sexo','$fnacimiento','$rfc','$calle','$num','$colonia','$cp','$estado','$delmun','$tel1',$nocuenta,$idtipotoma,Now());") === false) {
            $resp = $conec->ErrorMsg();
        }

        $query = $conec->Execute("select if(max(idusuario)<>0,max(idusuario),0) as id from usuariosC;");
        $idusuario = 0;
        if (!$query) {
            $resp = $conec->ErrorMsg();
        } else {
            while (!$query->EOF) {
                $idusuario = $query->fields['id'];
                $query->MoveNext();
            }
        }
        $pasha1 = sha1($idpass);
        if ($conec->Execute("insert into usuariosS (idusuario, nusuario, pass, tipo) values($idusuario, 
            '$idpass','$pasha1','UC')") === false) {
            $resp = $conec->ErrorMsg();
        }
        unset($pasha1);
    } catch (Exception $exc) {
        $resp = $exc->getTraceAsString();
    }
    if ($resp === "")
        $resp = "ok";

    return new soapval('return', 'xsd:string', $resp);
}

//Se crea la funcion para bajas
function bajas($id) {
    $conec = conectar();
    $ids = $id['id'];
    $conec->Execute("delete from usuariosC where idusuario=$ids;");
}

//Se crea la funcion para cambios
function cambios($jsondatos) {
    $resp = "";

    try {
        $conec = conectar();
        $datos = json_decode($jsondatos);

        $idu=$datos->{'idusuario'};
        $nombre = $datos->{'nombre'};
        $apaterno = $datos->{'apaterno'};
        $amaterno = $datos->{'amaterno'};
        $rsocial = $datos->{'rsocial'};
        $sexo = $datos->{'sexo'};
        $fnacimiento = $datos->{'fnacimiento'};
        $rfc = $datos->{'rfc'};
        $calle = $datos->{'calle'};
        $num = $datos->{'num'};
        $colonia = $datos->{'colonia'};
        $cp = $datos->{'cp'};
        $estado = $datos->{'estado'};
        $delmun = $datos->{'delmun'};
        $tel1 = $datos->{'tel1'};
        //$tel2 = $datos->{'tel2'};
        $nocuenta = $datos->{'nocuenta'};
        $idtipotoma = $datos->{'idtipotoma'};

        if ($fnacimiento === "") {
            $fnacimiento = "0000-00-00";
        }
        
        $query = $conec->Execute("update usuariosC set nombre='$nombre',apaterno='$apaterno',amaterno='$amaterno',rsocial='$rsocial',
            sexo='$sexo',fnacimiento='$fnacimiento',rfc='$rfc',calle='$calle',num='$num',colonia='$colonia',cp=$cp,
                estado='$estado',delmun='$delmun',tel1='$tel1',nocuenta=$nocuenta,idtipotoma=$idtipotoma,
                    fcambio=Now() where idusuario=$idu ;");
        if (!$query) {
            $resp = $conec->ErrorMsg();
        }
    } catch (Exception $exc) {
        $resp = $exc->getTraceAsString();
    }

    if ($resp === "")
        $resp = "ok";
    return new soapval('return', 'xsd:string', $resp);
}

// Secrea la funcion de Seleccionados
function seleccionados($id) {
    $respuesta = "";
    try {
        $conec = conectar();
        $query = $conec->Execute("select idusuario,nombre,apaterno,amaterno,rsocial,sexo,fnacimiento,rfc,calle,num,colonia,cp,
          estado,delmun,tel1,nocuenta,idtipotoma,falta from usuariosC where idusuario=$id;");
        if (!$query) {
            //$respuesta = $conec->EErrorMsg();
            $respuesta = "";
        } else {
            if ($query->RowCount() > 0) {
                while (!$query->EOF) {
                    $datos = array('idu' => $id, 'nombre' => $query->fields['nombre'],
                        'apaterno' => $query->fields['apaterno'], 'amaterno' => $query->fields['amaterno'],
                        'rsocial' => $query->fields['rsocial'], 'sexo' => $query->fields['sexo'],
                        'fnacimiento' => $query->fields['fnacimiento'], 'rfc' => $query->fields['rfc'],
                        'calle' => $query->fields['calle'], 'num' => $query->fields['num'],
                        'colonia' => $query->fields['colonia'], 'cp' => $query->fields['cp'],
                        'estado' => $query->fields['estado'], 'delmun' => $query->fields['delmun'],
                        'tel1' => $query->fields['tel1'], 'nocuenta' => $query->fields['nocuenta'],
                        'idtipotoma' => $query->fields['idtipotoma']);
                    $query->MoveNext();
                }
                $respuesta = json_encode($datos);
            } else {
                $respuesta = "";
            }
        }
    } catch (Exception $exc) {
        $exc->getTraceAsString();
    }
    if ($respuesta === "")
        $respuesta = "Error";

    return new soapval('return', 'xsd:string', $respuesta);
}

//Se crea la funcion de buscar
function buscar($jsonbuscador) {
    $respuesta = '';
    try {
        $conec = conectar();
        $buscar = json_decode($jsonbuscador);
        $valor = $buscar->{'valor'};
        $campo = $buscar->{'campo'};
        $lim = $buscar->{'limite'};

        $desendente = "";

        if ($lim == "si") {
            $desendente = " order by idusuario desc ";
        }

        switch ($campo) {
            case "nocuenta":
                $campoBuscar = " nocuenta=$valor limit 1;";
                break;
            case "nombre":
                $campoBuscar = " Concat_Ws(' ',nombre, apaterno, amaterno) like '$valor%' $desendente limit 25;";
                break;
            case "apellido":
                $campoBuscar = " Concat_Ws(' ', apaterno, amaterno) like '$valor%' limit 25;";
                break;
            case "rsocial":
                $campoBuscar = " rsocial like '$valor%' limit 25;";
                break;
            default:

                break;
        }
        $query = $conec->Execute("select idusuario, nocuenta, if(rsocial<>'',rsocial,concat_ws(' ',nombre, apaterno, amaterno))
as nombre from usuariosC where " . $campoBuscar);
        if (!$query) {
            $respuesta = $conec->EErrorMsg();
        } else {

            $Nrow = $query->RowCount();
            if ($Nrow > 0) {
                $filas = array($Nrow);
                $contador = 0;
                while (!$query->EOF) {
                    $filas[$contador] = array('id' => $query->fields['idusuario'], 'nombre' => $query->fields['nombre']
                        , 'nocuenta' => $query->fields['nocuenta']);
                    $contador++;
                    $query->MoveNext();
                }
                $respuesta = json_encode($filas);
            }
        }
    } catch (Exception $exc) {
        $respuesta = $exc->getTraceAsString();
    }
    if ($respuesta === "")
        $respuesta = "ok";

    return new soapval('return', 'xsd:string', $respuesta);
}

function verificar($nocuenta) {
    $resp="";
    try {
        $conx=  conectar();
        $query=$conx->Execute("select nocuenta from usuariosC where nocuenta=".$nocuenta);
        if(!$query){
            $resp=$conx->ErrorMsg();
        }
        else{
            if($query->RowCount()==0)
                $resp="d";
            elseif($query->RowCount()==1){
                $resp="o";
            }
        }
    } catch (Exception $exc) {
        $resp=$exc->getTraceAsString();
    }
    return new soapval('return','xsd:string',$resp);
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
exit();
?>
